package com.jixi.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jixi.common.result.PageResult;
import com.jixi.common.result.Result;
import com.jixi.pojo.entity.OrderDaily;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.Map;

public interface OrderDailyService extends IService<OrderDaily> {
   
    /**
     * 日订餐订单列表
     *
     * @param pageNum         页码
     * @param pageSize        每页数量
     * @param orderNumber     订单编号
     * @param schoolId        学校id
     * @param companyId       餐饮公司id
     * @param orderDateStatus 订单状态
     * @param timeValue       时间（天）
     * @return 日订餐订单列表
     */
    Result<PageResult> orderDailyPage(Integer pageNum,Integer pageSize,String orderNumber,Long schoolId,Long companyId,Integer orderDateStatus,String timeValue);
    
    /**
     * 通过id查日订餐订单详情
     *
     * @param orderDateId 日订餐订单id
     * @return 日订餐订单详情
     */
    OrderDaily getOrderDailyInfoById(Long orderDateId);
    
    /**
     * 通过订单编号查日订餐订单详情
     *
     * @param orderNumber 订单编号
     * @return 日订餐订单详情
     */
    OrderDaily getOrderDailyInfoByNumber(String orderNumber);
   
    /**
     * 统计日订餐订单数量
     *
     * @return 日订餐订单数量
     */
    Long countDailyOrder();
    
    /**
     * 查询套餐的已完成订单数量和总金额
     * <!>
     * 该接口可能会废弃
     * <!>
     *
     * @param setmealId 套餐id
     * @return 查询结果
     */
    Result<Map<String, Object>> selectsetmealumAndMoney(Long setmealId);
   
    /**
     * 查询公司与学校相关联的套餐的订单总数量和总金额
     *
     * @param companyId 公司id
     * @param schoolId  学校id
     * @param timeValue 时间（天）
     * @return 查询结果
     */
    Result<Map<String, Object>> selectCountCompanySchoolSetmeal(Long companyId, Long schoolId,String timeValue);
   
    /**
     * 统计各餐饮公司各学校按天的出餐统计信息
     *
     * @param pageNum   页码
     * @param pageSize  每页数量
     * @param companyId 餐饮公司id
     * @param schoolId  学校id
     * @param timeValue 时间（天）
     * @return 各餐饮公司各学校按天的出餐统计信息
     */
    Result<PageResult> CompanyMealOrderPage(Integer pageNum, Integer pageSize, Long companyId, Long schoolId, String timeValue, Integer status);
    
    /**
     * 导出各公司的各学校按月统计的学校订餐的订餐量和总金额统计excel
     *
     * */
    void downloadCompanyMealOrderPage(HttpServletResponse response, String timeValue)throws IOException;
}
